- 
          
- 
                Notifications
    You must be signed in to change notification settings 
- Fork 8.9k
fix(custom-element): optimize slot retrieval to avoid duplicates #13961
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
| WalkthroughUpdates VueElement._getSlots to iterate all root nodes (host plus Teleport targets), collect slot elements into a Set to deduplicate across roots, and return the aggregated array, preventing duplicate slot handling when Teleport targets overlap with the custom element host. Changes
 Sequence Diagram(s)sequenceDiagram
  autonumber
  actor Browser
  participant CE as VueCustomElement
  participant Roots as Root Nodes (host + Teleport targets)
  participant Set as Slot Set
  Browser->>CE: mount custom element (shadowRoot: false)
  CE->>Roots: discover root nodes (host + teleport targets)
  loop for each root
    CE->>Roots: query slot elements
    Roots-->>Set: add slot elements (deduplicated)
  end
  CE->>CE: Array.from(Set) -> slots array
  CE->>Browser: render slots (deduplicated)
  note right of CE: prevents null insertBefore when teleport target is ancestor
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~20 minutes Possibly related PRs
 Poem
 Pre-merge checks and finishing touches✅ Passed checks (5 passed)
 ✨ Finishing touches
 🧪 Generate unit tests (beta)
 📜 Recent review detailsConfiguration used: CodeRabbit UI Review profile: CHILL Plan: Pro 📒 Files selected for processing (1)
 🚧 Files skipped from review as they are similar to previous changes (1)
 Comment  | 
| Size ReportBundles
 Usages
 | 
| @vue/compiler-core
 @vue/compiler-dom
 @vue/compiler-sfc
 @vue/compiler-ssr
 @vue/reactivity
 @vue/runtime-core
 @vue/runtime-dom
 @vue/server-renderer
 @vue/shared
 vue
 @vue/compat
 commit:  | 
close #13955
Summary by CodeRabbit
Bug Fixes
Tests